//file: load_data.hpp
#ifndef _LOAD_DATA_HPP__
#define _LOAD_DATA_HPP__

#include <fstream>       // 新增：文件操作头文件
#include <sstream>       // 新增：字符串流处理
// 先包含 jsoncpp 头文件
#include <jsoncpp/json/json.h> 
#include <behaviortree_cpp/json_export.h>
#include <chrono>
#include <cstdint>

#define BUFFER_SIZE         3000

typedef struct
{
    float imu_euler;
    float imu_gyr;
    float tof_distance;
}sensorData;

typedef struct
{
    uint64_t to_t;
    uint64_t hs_t;
    uint64_t T_fid;
    uint64_t T_begin;
    uint64_t T_end;
    bool hasFindTO = false;
    uint64_t std,swd,hpr;
}event_time;

typedef struct
{
    std::vector<uint64_t> to;
    std::vector<uint64_t> hs;
    event_time event_t;
}gaitParam;

typedef struct
{
    float m_std;
    float m_swd;
    float m_hpr;
    int std_count=0;
    int swd_count=0;
    int hpr_count=0;
}M_date;

// namespace BT {
/*为 sensorData 实现 BT::ToJson() 特化在全局命名空间或 BT 命名空间中特化 ToJson 函数，告诉 BT 如何将 sensorData 转为 JSON*/
// template <>
// inline Json::Value ToJson<sensorData>(const sensorData& data)
// {
//     Json::Value value;
//     value["imu_euler"]     = data.imu_euler;
//     value["imu_gyr"]       = data.imu_gyr;
//     value["tof_distance"]  = data.tof_distance;
//     return value;
// }

// } // namespace BT
std::vector<sensorData> load_csv_data(const std::string& filepath);



// 方法2：使用 steady_clock（推荐，不受系统时间调整影响）
// uint64_t get_steady_time_ms() {
//     auto now = std::chrono::steady_clock::now();//单调递增
//     auto duration = now.time_since_epoch();// 获取从程序启动到当前的时间间隔
//     return std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
// }
// 最大毫秒数: 9223372036854775807
// 相当于: 9223372036854775 秒
// 相当于: 153722867280912 分钟  
// 相当于: 2562047788015 小时
// 相当于: 106751991167 天
// 相当于: 292,471,208 年


// 日志记录函数
void log_error_to_file(const std::string& message);










#endif